//
//  DDQIAPHelper.h
//  AppIAPTest
//
//  Created by 我叫咚咚枪 on 2017/9/4.
//  Copyright © 2017年 DDQ. All rights reserved.
//

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN


typedef NS_ENUM(NSUInteger, DDQIAPHeplerErrorCode) {//错误Code
    
    DDQIAPHeplerErrorNotProductInfo = 107038,           //未能获取到定义的商品信息
    DDQIAPHeplerErrorRequestFailure,                    //发起支付请求失败
    DDQIAPHeplerErrorTransactionFailure,                //商品信息验证失败
    DDQIAPHelperErrorRequestITunesStoreFailure,         //向iTunesStore发起请求失败
    DDQIAPHelperErrorITunesStoreVerifiedFailure,        //iTunesStore验证收据时出错
    
};

typedef NS_ENUM(NSUInteger, DDQIAPHeplerStatus) {//当前UI更新状态
    
    DDQIAPHeplerStatusStart = 10000,            //开始UI的提示
    DDQIAPHeplerStatusEnd,              //隐藏或删除UI的提示
    
};

typedef void(^_Nullable DDQIAPHeplerCompletion)(NSError *_Nullable error);
typedef void(^_Nullable DDQIAPHeplerRequestStatus)(DDQIAPHeplerStatus status);

@interface DDQIAPHelper : NSObject<NSCopying>

/**
 初始化方法
 */
+ (instancetype)helper;

/**
 是否支持App内购
 */
+ (BOOL)iap_allow;


/**
 发起内购请求，默认的是Async（异步）的
 
 @param identifier iTunes中的定义的商品ID
 @param completion 交易完成状态
 @param asyncStatus 交易UI显示状态
 */
- (void)iap_sendRequestWithProductIdentifier:(NSString *)identifier asyncCompletion:(DDQIAPHeplerCompletion)completion asyncStatus:(DDQIAPHeplerRequestStatus)asyncStatus;

/**
 发起内购请求，我让他回到主线程
 
 @param identifier iTunes中的定义的商品ID
 @param completion 交易完成状态
 @param syncStatus 交易UI显示状态
 */
- (void)iap_sendRequestWithProductIdentifier:(NSString *)identifier syncCompletion:(DDQIAPHeplerCompletion)completion syncStatus:(DDQIAPHeplerRequestStatus)syncStatus;

@end

NS_ASSUME_NONNULL_END
